31 TT = 20:BT = 24: GOSUB 691: GOSUB 701: VTAB 21: GOSUB 741:W = 38:B = 9:T = 3:L = 1:X = 1: GOSUB 931: IF E = 1 THEN GOSUB 711: PRINT "Please SAVE your program as POEM": PRINT "by typing SAVE POEM. Try again.": GOTO 31
41 BS = X: GOSUB 1151: ON E = 1 GOTO 31
51 GOSUB 931: IF E = 1 THEN GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "To SAVE a program you must give": PRINT "it a name. Please try again.": GOTO 31
61 IF MID$ (AN$,X,4) < >"POEM" THEN GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "Normally you could choose any": PRINT "name for your program, but this": PRINT "time you should SAVE POEM.": GOTO 31
101 TT = 20:BT = 24: GOSUB 691: GOSUB 701: VTAB 21: GOSUB 741:W = 38:B = 10:T = 3:L = 1:X = 1: GOSUB 931: IF E = 1 THEN GOSUB 711: PRINT "You need to catalog the disk by": PRINT "typing CAT. Please try again.": GOTO 101
111 GOSUB 1301: ON E = 1 GOTO 101: IF MID$ (AN$,X,4) = "ALOG" THEN GOSUB 711: PRINT "Yes, the CATALOG command would": PRINT "work on an 80-column display, but": PRINT "please type CAT because you're": PRINT "using a 40-column display.": GOTO 101
141 TT = 21:BT = 24: GOSUB 691: GOSUB 701: VTAB 23: GOSUB 741:W = 38:B = 9:T = 3:L = 1:X = 1: GOSUB 931: IF E = 1 THEN GOSUB 711: PRINT "You must type NEW and": PRINT "press RETURN to clear memory.": PRINT "Please try again.": GOTO 141
151 BS = X: IF MID$ (AN$,X,3) < >"NEW" THEN GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "NEW is the command you need to": PRINT "use to clear memory. Please try": PRINT "again.": GOTO 141
201 BS = X: GOSUB 1171: ON E = 1 GOTO 191: GOSUB 931: IF E = 1 THEN GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "To LOAD a program you must call": PRINT "it by name. Please try again.": GOTO 191
211 IF MID$ (AN$,X,4) < >"POEM" THEN GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "The only way you can LOAD your": PRINT "POEM program is by calling it by": PRINT "the right name. Try again.": GOTO 191
221 LD = 3:X = X +3: GOSUB 1231: ON E = 1 GOTO 191
261 TT = 20:BT = 24: GOSUB 691: GOSUB 701: VTAB 21: GOSUB 741:W = 38:B = 10:T = 3:L = 1:X = 1: GOSUB 931: IF E = 1 THEN GOSUB 711: PRINT "You can change LINE 30 by typing": PRINT "30 and following it with a new": PRINT "PRINT statement.": GOTO 261
271 SL = 2:BS = X: GOSUB 1011: IF LN$ < >"30" THEN GOSUB 711: PRINT "You are trying to replace": PRINT "line 30 by typing 30 and a": PRINT "PRINT statement. Try again.": GOTO 261
281 X = X +2: GOSUB 931: IF E = 1 THEN GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "You should follow the line": PRINT "number with a PRINT statement.": GOTO 261
291 GOSUB 1021: ON E = 1 GOTO 261: GOSUB 931: IF E = 1 THEN GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "You should type a new literal": PRINT "quote to replace the old one.": PRINT "Please try again.": GOTO 261
301 PN = 2: GOSUB 1051: ON E = 1 GOTO 261: GOSUB 1081: ON E = 1 GOTO 261: GOSUB 1121: ON E = 1 GOTO 261
321 TT = 20:BT = 24: GOSUB 691: GOSUB 701: VTAB 21: GOSUB 741:W = 38:B = 10:T = 3:L = 1:X = 1: GOSUB 931: IF E = 1 THEN GOSUB 711: PRINT "Please SAVE your program under": PRINT "some name other than POEM.": PRINT "Try again.": GOTO 321
331 BS = X: GOSUB 1151: ON E = 1 GOTO 321
341 PC = 1: GOSUB 931: IF E = 1 THEN GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "To SAVE a program you must give": PRINT "it a name. Please try again.": GOTO 321
351 PC = 0:SL = LEN(AN$): FOR Y = LEN(AN$) TO X STEP -1: IF MID$ (AN$,Y,1) = " " THEN SL = SL -1
361 IF MID$ (AN$,Y,1) < >" " THEN Y = X
371 NEXT Y:PN$(1) = MID$ (AN$,X,SL -X +1): IF LEN(PN$(1)) >15 THEN GOSUB 711: PRINT "You typed:": PRINT MID$ (BU$,BS): PRINT "Program names can be no longer": PRINT "than 15 characters. Try again.": GOTO 321
381 IF ASC(PN$(1)) <65 OR ASC(PN$(1)) >90 THEN GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "You can't begin a program name": PRINT "with a number or symbol.": PRINT "Please try again.": GOTO 321
391 FOR Y = 1 TO SL -X +1: IF MID$ (PN$(1),Y,1) = " " THEN E = 1: GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "You can't use spaces in program": PRINT "names. Please try again.":Y = SL
401 NEXT Y: ON E = 1 GOTO 321
411 FOR Y = 1 TO SL -X +1: IF ASC( MID$ (PN$(1),Y)) <46 OR ASC( MID$ (PN$(1),Y)) >57 AND ASC( MID$ (PN$(1),Y)) <65 OR ASC( MID$ (PN$(1),Y)) >90 THEN E = 1
421 IF E = 1 THEN GOSUB 711: PRINT "You typed " MID$ (BU$,BS)".": PRINT "If you use characters (other": PRINT "than '.') in program names": PRINT "you will get a SYNTAX ERROR.": PRINT "Please try again.":Y = SL
431 NEXT Y: ON E = 1 GOTO 321
441 FOR Y = 1 TO SL -1 +X: IF MID$ (PN$(1),Y,1) = "/" THEN E = 1: GOSUB 711: PRINT "You typed " MID$ (BU$,BS)".": PRINT "You shouldn't use slashes in": PRINT "program names since they have a": PRINT "special meaning. Please try again.":Y = SL
451 NEXT Y: ON E = 1 GOTO 321
461 IF PN$(1) = "POEM" THEN GOSUB 711: PRINT "You typed " MID$ (BU$,BS)".": PRINT "If you SAVE your program as POEM": PRINT "you will erase the old POEM": PRINT "program. Please save your": PRINT "program under another name.": GOTO 321
481 TT = 20:BT = 24: GOSUB 691: GOSUB 701: VTAB 21: GOSUB 741:W = 38:B = 9:T = 3:L = 1:X = 1: GOSUB 931: IF E = 1 THEN GOSUB 711: PRINT "You need to catalog the disk by": PRINT "typing CAT. Please try again.": GOTO 481
491 GOSUB 1301: ON E = 1 GOTO 481: IF MID$ (AN$,X,4) = "ALOG" THEN GOSUB 711: PRINT "Yes, the CATALOG command would": PRINT "work on an 80 column display,": PRINT "but please use CAT because you're": PRINT "using a 40 column display.": GOTO 481
1051 E = 0: IF MID$ (AN$,X,1) = CHR$(34) THEN RETURN
1061 E = 1:Q$ = MID$ (AN$,X,1): IF ASC(Q$) = 45 OR ASC(Q$) = 46 OR ASC(Q$) >47 AND ASC(Q$) <58 THEN GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "You could PRINT a number here,": PRINT "but we prefer that you type": PRINT "a literal quote. Try again.": RETURN
1071 E = 1: GOSUB 711: PRINT "You typed "; MID$ (BU$,BS);".": PRINT "You forgot to use a quotation": PRINT "mark after the PRINT statement.": PRINT "Please try again.": RETURN
1081 E = 0:SL = X +1
1091 ON SL > LEN(AN$) GOTO 1111: IF MID$ (AN$,SL,1) < > CHR$(34) THEN SL = SL +1: GOTO 1091
1101 IF MID$ (AN$,SL,1) = CHR$(34) THEN RETURN
1111 E = 1: GOSUB 711: PRINT "You typed "; MID$ (BU$,BS);".": PRINT "Although it's not required, we'd": PRINT "like you to end your statement": PRINT "with a second "; CHR$(34);" mark. Try again.": RETURN
1121 E = 0: IF SL > = X +2 THEN 1141
1131 E = 1: GOSUB 711: PRINT "You typed "; MID$ (BU$,BS);".": PRINT "It would help for now if you": PRINT "would enclose something inside": PRINT "the quotations. Try again.": RETURN
1151 E = 0: IF MID$ (AN$,X,4) = "SAVE" THEN X = X +4: RETURN
1161 E = 1: GOSUB 711: PRINT "You typed "; MID$ (AN$,BS);".": PRINT "To save a program to disk you": PRINT "should begin by typing SAVE.": PRINT "Please try again.": RETURN
1171 E = 0: IF MID$ (AN$,X,4) = "LOAD" THEN X = X +4: RETURN
1181 E = 1: GOSUB 711: PRINT "You typed "; MID$ (AN$,BS);".": PRINT "To load a program into memory": PRINT "you should begin by typing LOAD.": PRINT "Please try again.": RETURN
1191 E = 0: IF MID$ (AN$,X,3) = "RUN" THEN X = X +2: RETURN
1201 E = 1: GOSUB 711: PRINT "You typed "; MID$ (BU$,BS);".": PRINT "You should have typed RUN.": PRINT "Please try again.": RETURN
1211 E = 0: IF MID$ (AN$,X,4) = "LIST" THEN X = X +3: RETURN
1221 E = 1: GOSUB 711: PRINT "You typed "; MID$ (BU$,BS);".": PRINT "You should have typed LIST.": PRINT "Please try again.": RETURN
1231 E = 0: IF X > = LEN(AN$) THEN 1291
1241 FOR Y = X +1 TO LEN(AN$): IF MID$ (AN$,Y,1) < >" " THEN E = 1
1251 NEXT Y: IF LD = 1 AND E = 1 THEN GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "You shouldn't type anything after": PRINT "the line number if you wish to": PRINT "to delete a line. Try again.": RETURN
1261 IF LD = 2 AND E = 1 THEN GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "Please don't type anything after": PRINT "the program name or it will be-": PRINT "come part of the name. Try again.": RETURN
1271 IF LD = 3 AND E = 1 THEN GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "If you type anything after the": PRINT "program name the computer will": PRINT "try to find the wrong program.": PRINT "Please try again.": RETURN
1281 IF E = 1 THEN GOSUB 711: PRINT "You typed "; MID$ (BU$,BS)".": PRINT "Please don't type anything after": PRINT "the command. It will just": PRINT "complicate things. Try again.": RETURN
1291 RETURN
1301 E = 0: IF MID$ (AN$,X,3) = "CAT" THEN X = X +3: RETURN
1311 E = 1: GOSUB 711: PRINT "You typed "; MID$ (BU$,BS);".": PRINT "You need to type CAT to": PRINT "display the catalog. Try again.": RETURN
1321 HPLOT AX,BY TO AX,BY +10: HPLOT AX,BY TO AX +2,BY TO AX +5,BY +2 TO AX +5,BY +4 TO AX +3,BY +5 TO AX,BY +5: RETURN
1331 HCOLOR= C1: GOSUB 1321: FOR TP = 1 TO 75: NEXT TP: RETURN
1341 DATA 85,35,110,13,120,16,130,21,140,27,150,32,160,32,170,31,178,31, 185,31,182,35,182,38,182,42,190,50,200,55,220,55,238,60,215,94, 220,55,200,55,190,50,180,42,182,38,182,35,185,31
1351 DATA 178,31,170,31,160,32,150,32,140,27,130,21,120,16,110,13,85,35:NAME$ = "Computer User's Anon.": GOSUB 1421: END
1361 TT = TT(1):BT = BT(1):W = W(1):B = B(1):T = T(1):L = L(1): GOSUB 691: GOSUB 701: VTAB IV: GOSUB 741:X = 1: GOSUB 931: IF E = 1 THEN GOSUB 711: PRINT "Please type RUN and": PRINT "press RETURN. Try again.": GOTO 1361
1371 BS = X: GOSUB 1191: ON E = 1 GOTO 1361: GOSUB 1231: ON E = 1 GOTO 1361
1381 RETURN
1391 TT = TT(1):BT = BT(1):W = W(1):B = B(1):T = T(1):L = L(1): GOSUB 691: GOSUB 701: VTAB IV: GOSUB 741:X = 1: GOSUB 931: IF E = 1 THEN GOSUB 711: PRINT "Please type LIST and": PRINT "press RETURN. Try again.": GOTO 1391
1401 BS = X: GOSUB 1211: ON E = 1 GOTO 1391: GOSUB 1231: ON E = 1 GOTO 1391
1411 RETURN
1421 NO$ = "": FOR X = 1 TO LEN(NAME$):Y = ASC( MID$ (NAME$,X)): IF Y = 32 THEN NAME$ = LEFT$(NAME$,X -1) +"." + MID$ (NAME$,X +1)